# Copyright 2023 Specter Ops, Inc.
# 
# Licensed under the Apache License, Version 2.0
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# 
# SPDX-License-Identifier: Apache-2.0

name: Run Tests

on:
  push:
    branches: [main]
  pull_request:
    types: [opened, synchronize]

jobs:
  run-tests:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout source code for this repository
      uses: actions/checkout@v3

    - name: Set up Docker Compose
      run: |
        sudo apt-get update -y
        sudo apt-get install -y docker-compose
        docker-compose version

    - name: Start PostgreSQL and Neo4j Containers
      run: |
        docker-compose -f docker-compose.testing.yml up -d

    - name: Install Go
      uses: actions/setup-go@v4
      with:
        go-version: '^1.21.0'

    - name: Install Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.10'

    - name: Run Tests
      run: | 
        export INTEGRATION_CONFIG_PATH=$(pwd)/.github/config/integration.config.json
        python packages/python/beagle/main.py test -avi

    - name: Neo4j Debug Logs
      if: failure()
      run: |
        docker-compose -f docker-compose.testing.yml exec -T testgraph cat /logs/debug.log

    - name: Postgres Debug Logs
      if: failure()
      run: |
        docker-compose -f docker-compose.testing.yml logs testdb

    - name: Stop and Remove Containers
      if: ${{ ! cancelled() }}
      run: |
        docker-compose -f docker-compose.testing.yml down
